package com.sunshine.common.utils;

import org.apache.log4j.Logger;

/**
 * log4j 工具类
 * 
 * @author NGU-sunshine
 *
 */
public class LoggerUtils {

	public static final Logger logger = Logger.getLogger(LoggerUtils.class);

	private LoggerUtils() {
	}

	/**
	 * 记录info级别信息
	 * 
	 * @param msg 需要记录的信息
	 */
	public static void info(String msg) {
		// 获取的当前任务
		StackTraceElement[] stacks = Thread.currentThread().getStackTrace();

		// 拼接class文件名，方法名和行数
		String location = stacks[3].getClassName() + "." + stacks[3].getMethodName() + "." + "("
				+ stacks[3].getLineNumber() + ")";
		// 调用logger的info打印信息
		logger.info(location + msg);
	}

	/**
	 * 记录info级别异常信息
	 * 
	 * @param e 需要记录的异常信息
	 */
	public static void info(Exception e) {
		// 调用logger的info打印异常
		logger.info(e);
	}

	/**
	 * 记录info级别信息以及异常信息
	 * 
	 * @param msg  需要记录的信息
	 * @param e  需要记录的异常信息
	 */
	public static void info(String msg, Exception e) {
		// 获取的当前任务
		StackTraceElement[] stacks = Thread.currentThread().getStackTrace();

		// 拼接class文件名，方法名和行数
		String location = stacks[3].getClassName() + "." + stacks[3].getMethodName() + "." + "("
				+ stacks[3].getLineNumber() + ")";
		// 调用logger的info打印信息
		logger.info(location + msg + e);
	}

	/**
	 * 记录error级别信息
	 * 
	 * @param msg 需要记录的信息
	 */
	public static void error(String msg) {
		// 获取的当前任务
		StackTraceElement[] stacks = Thread.currentThread().getStackTrace();

		// 拼接class文件名，方法名和行数
		String location = stacks[3].getClassName() + "." + stacks[3].getMethodName() + "." + "("
				+ stacks[3].getLineNumber() + ")";
		// 调用logger的error打印信息
		logger.error(location + msg);
	}

	/**
	 * 记录error级别异常信息
	 * 
	 * @param e 需要记录的异常信息
	 */
	public static void error(Exception e) {
		// 调用logger的error打印异常
		logger.error(e);
	}

	/**
	 * 记录error级别信息以及异常信息
	 * 
	 * @param msg 需要记录的异常信息
	 * @param e 需要记录的信息
	 */
	public static void error(String msg, Exception e) {
		// 获取的当前任务
		StackTraceElement[] stacks = Thread.currentThread().getStackTrace();
		// 拼接class文件名，方法名和行数
		String location = stacks[3].getClassName() + "." + stacks[3].getMethodName() + "." + "("
				+ stacks[3].getLineNumber() + ")";
		// 调用logger的error打印信息和异常
		logger.error(location + msg + e);
	}
}